﻿#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <math.h>
//#include <string.h>
//#include <stdlib.h>
//struct Node
//{
//	int data;
//	struct Node* next;
//};
//struct Node* init()
//{
//	struct Node* p = (struct Node*)malloc(sizeof(struct Node));
//	/*p->data = 4;*/
//	p->next = NULL;
//	return p;
//}//初始化
//void insertfromhead(struct Node* head,int n)//toucha
//{
//	struct Node* p = (struct Node*)malloc(sizeof(struct Node));
//	p->data = n;
//	p->next = head->next;
//	head->next = p;
//}
//void insertfromend(struct Node* head, int n)
//{
//	struct Node* p = (struct Node*)malloc(sizeof(struct Node));
//	p->data = n;
//	struct Node* end;
//	end = head;
//	do
//	{
//		end = end->next;
//	} while (end->next = NULL);
//	p->next = end->next;
//	end->next = p;
//}//toucha
//void del(struct Node* head, int n)
//{
//	struct Node* p = head;
//	struct Node* q = NULL;
//	int i;
//	p = head;
//	for (i = 1;i <= n-1; i++)
//	{
//		p = p->next;
//		if (p->next == NULL)
//		{
//			printf("输入错误\n");
//			return;
//		}
//	}
//	q = p->next;
//	p->next=q->next;
//	free(q);
//}//shanchu
//void relief(struct Node* head)
//{
//	struct Node* p = NULL;
//	struct Node* q = NULL;
//	p = head;
//	while (p->next != NULL)
//	{
//		p = p->next;
//		free(p);
//	}
//	free(p->next);
//	free(head);
//}//shifang
//void lookof(struct Node* head,int n)
//{
//	struct Node* p = head;
//	int i = 0;
//	while (p->next != NULL)
//	{
//		p = p->next;
//		if (p->data == n)
//		{
//			i++;
//		}
//	}
//	printf("所查找的数在链表中有%d个\n", i);
//}//chazhao
//int main()
//{
//	struct Node* head = NULL;
//	head = init();	
//	return 0;
//}

//3、按照时间顺序进行排序。每个历史事件包括一个事件名称和一个年份（整数），输入的数据可以是以空格分隔的字符串对（例如 "事件名称 年份"），程序输出时应该按照年份从小到大的顺序列出这些事件。
//输入格式：
//•	首先输入一个整数N，表示历史事件的数量。
//•	接下来输入N行，每行包含一个历史事件及其年份，以空格分隔。
//输出格式：
//•	按照年份从小到大的顺序输出这些历史事件，每行一个事件，格式为 "年份: 事件名称"。
//
//示例输入：
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//#include <math.h>
//#define max1 100
//#define g 9.8
//#define v 340.0

//唐僧师徒西天取经路过无底洞，师傅被抓进了洞里，悟空准备营救，但不知该洞深度，
//八戒提议向洞中扔一块石头，根据落地时间估算深度。只要测得回声时间t，
//则可求得洞的深度，其中需要考虑自由落体时间和触底声音传回洞口的时间。
//请结合数学和物理知识，编程帮助八戒解决问题。由八戒输入测得的时间间隔t，默认重力加速度g = 9.8m / s2，声速v = 340m / s
//int main()
//{
//	double t, h, T, temp;
//	printf("请输入间隔时间(浮点型）\n");
//	scanf("%lf", &t);
//	printf("%lf\n", t);
//	temp = 1 + (4 * g * t) / (2 * v);
//	printf("%lf\n", temp);
//	T = v  * (-1 + fabs(temp))/g;
//	printf("%lf\n", T);
//	h = 1 / 2.0 * g * T * T;
//	printf("高度为：%g\n",h);
//	return 0;
//}
//#include <stdio.h>
//#include <math.h>
//#define G 9.8 
//#define V 340 
//#define PI 3.14159265358979323846
//int main() {
//    double A;      // 振幅
//    double k;      // 弹簧常数
//    double m;      // 质量
//    double phi;    // 初相位
//    double omega;   // 角频率
//    double t;      // 时间
//    double dt;     // 时间步长
//    double position, velocity, acceleration;
//
//    // 输入参数
//    printf("请输入振幅 A (米): \n");
//    scanf("%lf", &A);
//    printf("请输入弹簧常数 k (N/m): \n");
//    scanf("%lf", &k);
//    printf("请输入质量 m (kg): \n");
//    scanf("%lf", &m);
//    printf("请输入初相位 phi (弧度): \n");
//    scanf("%lf", &phi);
//
//    // 计算角频率
//    omega = sqrt(k / m);
//
//    // 设置时间步长
//    dt = 0.1;
//
//    // 输出表头
//    printf("时间(s)\t位置(m)\t速度(m/s)\t加速度(m/s^2)\n");
//
//    // 模拟振动过程
//    for (t = 0; t <= 10; t += dt) {
//        // 计算位置、速度和加速度
//        position = A * cos(omega * t + phi);
//        velocity = -A * omega * sin(omega * t + phi);
//        acceleration = -A * omega * omega * cos(omega * t + phi);
//
//        // 输出结果
//        printf("%.1f\t\t%.4f\t\t%.4f\t\t%.4f\n", t, position, velocity, acceleration);
//    }
//
//    return 0;
//}
#include <stdio.h>
//
//int isLeapYear(int year) {
//    // 判断是否为闰年
//    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
//}
//
//void calculateNewTime(int startYear, int startMonth, int startDay, int startHour, int startMinute, int startSecond, double t) {
//    // 每个月的天数
//    int daysInMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//
//    // 起始时间的总秒数
//    long totalSeconds = startHour * 3600 + startMinute * 60 + startSecond;
//    totalSeconds += (startDay - 1) * 86400; // 加上天数的秒数
//
//    // 加上时间间隔 t
//    totalSeconds += (long)t;
//
//    // 计算新的日期和时间
//    int year = startYear, month = startMonth, day = startDay;
//
//    // 处理总秒数转换为日期
//    while (totalSeconds >= 86400) { // 每天86400秒
//        totalSeconds -= 86400;
//        day++;
//
//        // 检查是否需要进到下一个月
//        if (day > daysInMonth[month]) {
//            if (month == 2 && isLeapYear(year)) {
//                if (day > 29) {
//                    day = 1;
//                    month++;
//                }
//            }
//            else {
//                day = 1;
//                month++;
//            }
//            if (month > 12) {
//                month = 1;
//                year++;
//            }
//        }
//    }
//
//    // 计算小时、分钟和秒
//    int hour = totalSeconds / 3600;
//    totalSeconds %= 3600;
//    int minute = totalSeconds / 60;
//    int second = totalSeconds % 60;
//
//    // 输出结果
//    printf("新的时间为：%d年%d月%d日 %02d:%02d:%02d\n", year, month, day, hour, minute, second);
//}
//
//int main() {
//    int year, month, day, hour, minute, second;
//    double t;
//
//    // 输入起始时间
//    printf("请输入起始时间（格式：年 月 日 时 分 秒）：\n");
//    scanf("%d %d %d %d %d %d", &year, &month, &day, &hour, &minute, &second);
//
//    // 输入时间间隔
//    printf("请输入时间间隔 t（秒）：\n");
//    scanf("%lf", &t);
//
//    // 计算新的时间
//    calculateNewTime(year, month, day, hour, minute, second, t);
//
//    return 0;
//}

